// apis/uni-fetch.js

// 导入安装好的 uni-app-fetch 模块
import { createUniFetch } from 'uni-app-fetch'
import { useUserStore } from '../stores/user'

// 配置符合自身业务的请求对象
export const uniFetch = createUniFetch({
  loading: { title: '正在加载...' }, //请求提示配置
  baseURL: 'https://slwl-api.itheima.net', //配置请求基地址
  intercept: {
    // 请求拦截器
    request(options) {
      // 既然所有的请求都要经过这个方法处理一下,那么就可以在这里统一携带同恩给服务器即可
      // 1.从pinia中获取token
      const store = useUserStore()
      const token = store.token
      // 2.在options.header中存储了所有的请求报文，直接将token增加到options.hedaer
      options.header = Object.assign(
        {},
        { Authorization: token },
        options.header
      )

      return options //确保请求参数加工之后，能够正常发送请求
    },
    // 响应拦截器
    response(result) {
      // result: 就是服务器响应回来的响应报文：响应行，响应头，响应体
      console.log('响应拦截器：', result)

      // 判断如果服务器的statusCode为401，则提示用户并跳转到登录页
      if (result.statusCode == 401) {
        uni.utils.toast('登录失败，请重新登录')
        uni.redirectTo({
          url: '/pages/login/index',
        })
      }
      return result.data // 响应体数据   确保响应参数加工之后，能够正常接收
    },
  },
})
